package com.chenliwu.demo.collection;

import com.sun.tools.javac.util.List;

import java.util.ArrayList;

/**
 * @author chenlw
 * @date 2019/12/07
 */
public class CollectionTester {

    static class Fruit {
        String name;
    }

    static class Apple extends Fruit {

    }

    static class RedApple extends Apple {

    }

    public static void main(String[] args) {

    }

    /**
     * 从集合中取元素, 使用<? extends T>通配符
     */
    static void testExtends() {
//        List<Apple> appleList = new ArrayList<>();
//        appleList.add(new Apple());
//        // 只能添加apple类及其子类，apple父类不能添加
//        appleList.add(new Fruit());
//        appleList.add(new RedApple());
//
//        List<Fruit> fruitList = new ArrayList<>();
//        fruitList.add(new Fruit());
//        fruitList.add(new RedApple());
//
//        // <? extends Fruit>标签的容器进行限制，不允许随意放入水果
//        List<? extends Fruit> fruitContainers = new ArrayList<>();
//        fruitContainers.add(new Apple());
//        fruitContainers.add(new Fruit());
//
//        Apple apple = fruitContainers.get(0);
//        // 拿出来的一定是Fruit
//        Fruit fruit = fruitContainers.get(0);
    }

    /**
     * 向集合中放元素, 使用<? super T>通配符
     */
    static void testSuper(){
//        List<? super Apple> appleContainers = new ArrayList<>();
//        appleContainers.add(new Apple());
//        appleContainers.add(new Fruit());
    }


}
